草庐IT

Julia 元组

全部标签

c++ - 如何在新元组中提取元组的子集?

我有一个包含变量类型元组的类,如下所示:templatestructTester{std::tuplet;templatestd::tupleGet(){???}};一个例子是Tester我希望我的Get函数只返回内部元组的一个子集。例如,tester.Get将返回std::tuple其值是从内部元组的适当成员中复制的。您可以假设每种类型在一个元组中最多出现一次,并且Get只会使用元组中合理的模板参数调用。 最佳答案 实际上,这比您想象的要容易。std::get采用类型作为元组成员索引的替代(C++14起),并返回元组中的第一个匹配

c++ - boost 元组性能

根据boost::tupledocumentation,访问元组的单个元素与访问成员变量具有相同的性能。例如,给定以下声明:tuplet1(A(),B(),C());structT{Aa;Bb;Cc;}Tt2;这两个语句的性能应该相同(或差异可以忽略不计):t1.get();t2.c;我查看了boost::tuple的来源,如果我理解正确(我不确定我理解的是否正确),get函数实际执行此操作:Cget(tuple&t){returnt.tail.tail.head;//Generally:returnt.tail.>.head;}与直接访问相比,这更类似于链表中的查找,并且据我所知,复

c++ - 将从元组派生的对象放入 C++ 中的 vector 中

我想创建一个包含3个值的结构:一个字符串和两个整数。该字符串是强制性的,但其中一个(或两个)整数是可选的,如果未指定则可以默认为-1。但是,与其使用结构,不如尝试使用std::tuple。为了合并两个整数的可选性,我设置了一个继承自std::tuple的“Trio”类,如下所示:#include#includeclassTrio:publicstd::tuple{public:explicitTrio(std::stringconst&name,intval1=-1,intval2=-1):tuple(name,val1,val2){}};然后我通过将一些Trio对象插入std::ve

c++ - 元组实现是否有优化的布局?

阅读时this我对某种级别的元编程可以为您的类布局做些什么感到惊讶。我必须承认,我没有完全理解建议的最佳布局是什么,如果我必须说明我的理解,那就是:orderingclassmemberbydescendingalignmenti.e.thetypewiththegreatestalignofresultgoesfirstetc如果我弄错了,请随时纠正我(如果您能简短地解释为什么会发生这种情况,那就更好了,我无法在我的问题中复制粘贴大量的基本原理),但我的问题是关于另一个主题:std::tuple的库实现有这样的布局优化吗?如果没有,是否有任何标准代数数据类型可以这样做,除了编写这样的

c++ - 连接元组作为类型

我正在尝试练习一些模板编程。也许有一个标准的方法来做到这一点,我会很感激这样的答案,但我的主要目标是练习模板编程技术,所以我尝试自己实现它:我需要连接多个元组,但作为类型,不像std::cat_tuple可以。所以我需要类似cat,std::tuple,...>的东西得到std::tuple作为一种类型。我当前的尝试失败了isnotatemplate错误:/*Concattuplesastypes:*/templatestructcat{usingtype=typename_cat::type>::type;^^^^catisnotatemplate};templatestructca

c++ - 空嵌套元组错误

#include#includeintmain(){autobt=std::make_tuple(std::tuple(),std::tuple>());//Line1autobt2=std::make_tuple(std::tuple(),std::tuple());//Line2}为什么第1行给出编译错误,而第2行编译正常?(在Gcc和Clang中测试)是否有可能的解决方法?clang的错误信息/usr/include/c++/4.6/tuple:150:50:error:ambiguousconversionfromderivedclass'std::_Tuple_impl,st

c++ - 如何在 c++ (visual studio) 中使用 julia 语言

是否可以在C++中使用julia语言?Julia语言是否提供了一些库来包含?现在,我正在尝试在我的c++项目中使用一些julia语言的函数。这是可能的吗?我能做什么?提前致谢。 最佳答案 嵌入Julia是的,Julia可以嵌入在Julia本身可用的所有平台上的C或C++程序中,并且在所有情况下,一般方法都是相同的,但特别是在Windows中嵌入变得更加困难,因为当前用于编译/嵌入的框架(gcc)不是该平台的默认熟悉版本(MSVC)。原因是Julia是使用在Windows上构建的。gcc而不是MSVC.高水平概括来说,嵌入Julia的

c++ - 将结构拆分为元组

这个问题在这里已经有了答案:TMP:howtowritetemplatecodewhichconvertsanystructintoatuple?(1个回答)关闭4年前。问题很直接,我如何生成:std::tuple如果我知道类型:structFoo{floata;intb;doublec;};我如何在这两种转换中检索数据?

c++ - 来自元组的构造函数参数

假设我有一个模板,它由一个类类型和一些参数类型参数化。一组匹配这些类型的参数存储在一个元组中。如何将这些传递给类类型的构造函数?几乎在C++11代码中:templatestructfoo{tupleargs;Tgen(){returnT(get(args),get(args),...);}};构造函数调用中的...不定长怎么填?我想我可以想出一些复杂的递归模板调用机制来执行此操作,但我不敢相信我是第一个想要这个的人,所以我想会有现成的解决方案来这在那里,甚至可能在标准库中。 最佳答案 C++17有std::make_from_tup

c++ - 来自元组的构造函数参数

如果我有这样的结构:structThing{intx;inty;boola;boolb;}然后我可以创建一个Thing对象,方法是:Thingt{1,2,true,false};。但是,如果我有一个元组,那么我会做类似的事情:std::tupleinfo=std::make_tuple(1,2,true,false);Thingt{std::get(info),std::get(info)..//andsoon有更好的方法吗? 最佳答案 我们可以创建一个通用工厂函数,用于从类似元组的类型(std::tuple、std::pair、s